<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<ul class="nav">
			<li>vae</li>
			<li>uae</li>
			<li>oae</li>
			<li>darkgreen</li>
		</ul>

		<script>
			// 闭包应用-点击 li 输出当前 li 的索引号
			// 1. 利用动态添加属性的方式
			const lis = document.querySelector('.nav').querySelectorAll('li');
			// for (var i = 0; i < lis.length; i++) {
			// 	// 如果使用 let 就不会出现这种问题
			// 	lis[i].index = i;
			// 	lis[i].addEventListener('click', function () {
			// 		console.log(i);
			// 	});
			// }

			// 2. 利用闭包的方式得到当前 li 的索引号
			for (let i = 0; i < lis.length; i++) {
				// 立即执行函数也称为小闭包，因为立即执行函数里面的任何一个函数都可以使用它的 i 变量
				(function (i) {
					lis[i].onclick = function () {
						console.log(i);
					};
				})(i);
			}

			// 闭包不一定更加简单方便，根据情况去选择
		</script>
	</body>
</html>
